package com.paradogs.common.utils;

import com.baomidou.mybatisplus.core.toolkit.IdWorker;

import java.util.Random;

/**
 * @author: yumi
 * @date: 2024/12/20  15:49
 * @Description: 随机工具类
 */
public class RandomUtils {
    /**
     * 生成指定范围内的随机整数（包含最小值和最大值）
     *
     * @param min 最小值
     * @param max 最大值
     * @return 生成的随机整数
     */
    public static int nextInt(int min, int max) {
        Random random = new Random();
        return random.nextInt(max - min + 1) + min;
    }

    public static Long snowId() {
        return IdWorker.getId();
    }

    /**
     * 根据权重随机掉落
     * @param arr 随机列表
     * @param weightIndex 权重下标
     * @return
     */
    public static Integer[] nextWeight(Integer[][] arr, int weightIndex) {
        if (arr == null) return null;
        int total = 0;
        for (Integer[] i : arr) {
            total += i[weightIndex];
        }
        int cur = 0;
        int weight = nextInt(0, total);
        for (Integer[] i : arr) {
            cur += i[weightIndex];
            if (weight <= cur) return i;
        }
        return null;
    }
    /**
     * 根据权重随机掉落
     * @param arr 0 ID、1 数量、2 权重
     * @return
     */
    public static Integer[] nextWeight(Integer[][] arr) {
        return nextWeight(arr, 2);
    }

}
